SPSS – 使用值标签重新编码工具
本文介绍了一个简单的工具,可以将值及其值标签重新编码为不同的值。
- 前提条件和下载
- 检查结果和创建新变量
- 示例 I - 反向编码变量
- 示例 II - 在 AUTORECODE 后更正顺序
- 示例 III - 将 1-2 转换为 0-1 编码
- 示例 IV - 使用原生语法更正编码错误
示例数据
我们将使用 recode-with-value-labels.sav(部分如下所示)用于所有示例。
这些数据包含几个常见问题:
某些变量必须进行反向编码,因为它们测量的是某个量表中其他变量的相反方向。
某些有序变量被编码为 字符串变量 (string variables)。
本文介绍的工具是解决这些和其他几个常见问题的最快选择。
前提条件和安装
我们的重新编码工具需要 SPSS 24+ 版本,并正确安装 SPSS Python 3 essentials。通常情况下,较新的 SPSS 版本都已安装。
接下来,从 SPSS_TUTORIALS_RECODE_WITH_VALUE_LABELS.spe 下载我们的工具。您可以将其拖放到数据编辑器窗口中进行安装。或者,导航到 “E_x_tensions”(扩展) “I nstall local extension bundle”(安装本地扩展包),如下所示。
在打开的对话框中,导航到下载的 .spe 文件并选择它。SPSS 现在会弹出一个消息,提示“该扩展已成功安装在 T ransform (转换) - SPSS tutorials - Recode with Value Labels(使用值标签重新编码) 下”。您现在可以在 T ransform (转换) SPSS tutorials - Recode with Value Labels(使用值标签重新编码) 下找到我们的工具,如下所示。
检查结果和创建新变量
如果您使用我们的工具,您可能需要验证所有结果是否正确。一种基本方法是在重新编码变量之前和之后比较一些频数分布。如果您的输出中只显示值标签,它们将是相同的(除了它们的顺序)。
我们的工具修改现有变量,而不是创建新变量。如果您不喜欢这样,可以将它与我们的 SPSS 克隆变量工具(如下所示)结合使用。
一个非常可靠的策略是:
- 克隆所有您想要重新编码的变量;
- 使用我们的重新编码工具重新编码原始变量(而不是克隆的变量);
- 使用交叉表(CROSSTABS)比较重新编码的变量与其克隆的副本;
- 可选:完成后从您的数据中删除克隆的变量。
好了,现在让我们看看我们的重新编码工具如何解决一些常见的数据问题。
示例 I - 反向编码变量
Conf01 到 Conf06 旨在衡量自信程度。但是,Conf04 和 Conf06 表明 缺乏 自信,并且与其他自信项目呈 负相关。
这个问题可以通过反向编码这些项目来解决。安装我们的工具后,让我们首先导航到 T ransform (转换) SPSS tutorials - Recode with Value Labels(使用值标签重新编码)。接下来,我们将填写如下所示的对话框。
排除 8 (No answer) 的 用户缺失值 (user missing value) 会使该值及其值标签保持不变。
完成这些步骤会生成以下语法。让我们运行它。
***REVERSE CODE CONF04 AND CONF06.
**
SPSS TUTORIALS RECODE_WITH_VALUE_LABELS VARIABLES=Conf04 Conf06 OLDVALUES=1 2 3 4 5 6 7 NEWVALUES=7 6 5 4 3 2 1
/OPTIONS LABELSUFFIX=" (R)" ACTION=RUN.
结果
请注意,(R) 已附加到我们的反向编码变量的变量标签;
值和值标签也已反转。
现在,我们的反向编码项目与其他所有自信项目呈正相关,这是计算 Cronbach’s alpha 或该量表的平均值或总分所必需的。
示例 II - 在 AUTORECODE 后更正顺序
另一个常见问题是 SPSS 中的有序字符串变量,例如 suc01 到 suc06,它们衡量的是自我感知的成功程度。首先,让我们通过导航到 T ransform (转换) A utomatic Recode (自动重新编码) 将它们转换为带标签的数值变量。接下来,我们将为单个变量创建一个 AUTORECODE 命令,如下所示。
现在,我们可以轻松地将剩余的 5 个变量添加到生成的 SPSS 语法 中,如下所示。让我们运行它。
***CONVERT STRING VARIABLES INTO NUMERIC ONES.
**
AUTORECODE VARIABLES=suc01 to suc06 /* ADD ALL OLD VARIABLES HERE */
/INTO nsuc01 to nsuc06 /* ADD ALL NEW VARIABLES HERE */
/GROUP
/PRINT.
此语法将我们的字符串变量转换为数值变量,但答案类别的顺序与所需顺序不符。为了纠正这一点,我们首先将新的数值值复制粘贴到 Notepad++ 或 Excel 中。这使得将它们移动到所需的顺序变得容易,如下所示。
这样做清楚地表明我们需要:
- 将 9 转换为 1,
- 将 3 转换为 2,
- 将 7 转换为 3,
- 等等…
下图显示了如何使用我们的重新编码工具来做到这一点。
这将生成以下语法,该语法为我们的自动重新编码数值变量设置正确的顺序。
***FIX CATEGORY ORDER AFTER AUTORECODE.
**
SPSS TUTORIALS RECODE_WITH_VALUE_LABELS VARIABLES=nsuc01 nsuc02 nsuc03 nsuc04 nsuc05 nsuc06
OLDVALUES=9 3 7 4 6 2 8 5 1 NEWVALUES=1 2 3 4 5 6 7 8 9
/OPTIONS ACTION=RUN.
示例 III - 将 1-2 转换为 0-1 编码
在 SPSS 中,我们最好对二分变量使用 0-1 编码。一些原因是:
- 这有助于解释多元回归中 虚拟变量 (dummy variables) 的 b 系数;
- 0-1 编码变量的平均值对应于“是”答案的比例,这很容易解释。
以下语法可以使用我们的重新编码工具轻松创建,并将数据文件中所有 二分变量 (dichotomous variables) 的 1-2 编码转换为 0-1 编码。
***CHANGE 1-2 CODING TO 0-1 CODING FOR SEVERAL VARIABLES.
**
SPSS TUTORIALS RECODE_WITH_VALUE_LABELS VARIABLES=somed01 somed02 somed03 somed04 somed05 somed06 somed07 OLDVALUES=2 NEWVALUES=0
/OPTIONS ACTION=RUN.
示例 IV - 使用原生语法更正编码错误
如果我们仔细观察我们的最终变量 sat01,我们会看到它被编码为 21 到 27。根据我们如何分析它,我们可能想要将其转换为标准的 7 点李克特量表。下面的屏幕截图显示了它是如何完成的。
请注意,我们选择“Create syntax and print it”(创建语法并打印它)以创建原生语法。
结果
如下所示,选择打印选项会在您的输出窗口中生成原生 SPSS 语法。
我们因此从输出窗口复制粘贴的语法是:
***CORRECT CODING WITH NATIVE SYNTAX.
**
RECODE sat01 (21.0 = 1.0)(22.0 = 2.0)(23.0 = 3.0)(24.0 = 4.0)(25.0 = 5.0)(26.0 = 6.0)(27.0 = 7.0).
EXECUTE.
VALUE LABELS
/sat01 1.0 'Strongly disagree' 2.0 'Disagree' 3.0 'Slightly disagree' 4.0 'Neutral' 5.0 'Slightly agree' 6.0 'Agree' 7.0 'Strongly agree'.
请注意,它由 3 个非常基本的命令组成:
那么为什么要考虑使用打印选项呢?嗯,我们的工具创建的默认语法只能在安装了该工具的 SPSS 安装上运行。因此,如果客户或同事需要复制您的工作,使用原生语法可确保一切都可以在 任何 SPSS 安装上运行。